package com.liu.thread.ch11;

/**
 * 双检查锁机制
 * @author My
 *
 */
public class MySingleton {
	//volatile关键字保其可见性
	volatile private static MySingleton instance=null;
	
	private MySingleton(){
		
	}
	public static MySingleton getInstance(){
		try {
			
			//懒汉单例模式
			if(instance==null){
				//创建实例之前可能会有一些准备性的耗时工作
				Thread.sleep(300);
				synchronized (MySingleton.class){
					//二次检查
					if(instance==null){
						instance=new MySingleton();
					}
				}
			}
				
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return instance;
	}
		
}

